﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>

//1.此函数不能打印\0，导致显示arr1时无法停止
//void my_strcpy(char* dest, char* src)
//{
//	while (*src != '\0')
//	{
//		*dest = *scr;
//		dest++;
//		scr++;
//	}
//}

//2.还不够简洁
//void my_strcpy(char* dest, char* src)
//{
//	while (*src != '\0')
//	{
//		*dest++ = *src++;
//	}
//	*dest = *src;	//把‘\0’赋值过去，停止打印后边字符
//}

//模拟实现字符创相关函数（strcpy）
//char* my_strcpy(char* dest, const char* src)//const使得*src = *dest错误被发现
//{
//	assert(src != NULL);//断言:不满足条件时报警
//	assert(dest != NULL);
//	char* ret = dest;
//	while (*dest++ = *src++)//既能够copy\0，又能够退出循环(因为\0的ascll码值为0)
//	{
//
//	}
//	return ret;
//}
//
//int main()
//{
//	char arr1[20] = "***************";
//	char arr2[] = "hello!";
//	my_strcpy(arr1, arr2);
//	printf("%s\n", arr1);
//	return 0;
//}

//模拟实现字符创相关函数（strlen）
int my_strlen(const char* str)
{
	//assert(str != NULL);
	assert(str);
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	char arr[] = "*****";
	int len = my_strlen(arr);
	printf("%d\n", len);

	return 0;
}

//int main()
//{
//	const int num = 10;
//	num = 20;
//	const int* p = &num;
//	*p = 20;
//}